package com.cskaoyan.javase.basic._5escape;

/**
 * 转义字符: 首先它仍然代表一个字符,所谓转义字符，就是用反斜杠（\）加上一个特殊的字符串用来表示一个全新的字符.转义字符实际上可以表示所有的Unicode字符,但实际上如果一个字符键盘就能够直接录入了,是没有必须使用转义字符的
 * 所以转义字符多用来表示控制字符或者键盘上没有的字符
 *
 * 转义字符后面还可以跟八进制数和十六进制数:
 *      1.\xxx,其中xxx表示一个八进制数,取值范围是\0 ~ \377 十进制的编码值就是0~255
 *      2.\Uxxxx,其中xxxx表示一个四位十六进制数,取值范围是\u0000~\uffff,编码值的取值范围是0~65535
 *
 * @since 14:38
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        // 常见的转移字符
        // \b表示退格,删除一格
        System.out.print("12345\b");
        // \n表示换行
        System.out.print("\n567");
        // \t表示制表符
        System.out.println("\t1231");
        // \r表示回车
        System.out.println("hello\rworld");

        System.out.println("\141");
        System.out.println("\u0061");
        // \U0000表示编码值是0的字符,是一个空的字符,绝对空的字符
        System.out.println("\u0000" + "abc");

        // java代码双反斜杠表示单反斜杠
        System.out.println("\\");
        System.out.println("\"");
        System.out.println("\'");

        // Java代码当中如何表示各种进制的数?
        /*
            1.默认是十进制的
            2.如果想要输入二进制数,要在数字前加"0b"/"0B"
            3.如果想要输入八进制数,要在数字前加"0"
            4.如果想要输入十六进制数,要在数字前加"0x"或者"0X"
         */
        int a = 100;
        int b = 0b100;
        // Octal integer '0100'
        int c = 0100;
        System.out.println(b);
        System.out.println(c);
    }
}
